<?php

/**
 * taller actions.
 *
 * @package    atenea
 * @subpackage taller
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $
 */
class tallerActions extends autotallerActions
{
 public function executeIndex()
  {
        return $this->redirect('taller/edit');
  }

  public function executeList()
  {
    $this->processSort();

    $this->processFilters();


    // pager
    $this->pager = new sfPropelPager('Ateneausuario', 20);
    $c = new Criteria();
    $this->addSortCriteria($c);
    $this->addFiltersCriteria($c);
    $this->pager->setCriteria($c);
    $this->pager->setPage($this->getRequestParameter('page', 1));
    $this->pager->init();
  }

  public function executeCreate()
  {
    return $this->forward('taller', 'edit');
  }

  public function executeSave()
  {
    return $this->forward('taller', 'edit');
  }

  public function executeEdit()
  {

    $this->ateneausuario = $this->getAteneausuarioOrCreate();
    $this->saveAteneausuario($this->ateneausuario);

    //$this->setFlash('notice', 'Los talleres han sido registrados');


  }

  public function executeDelete()
  {
    $this->ateneausuario = AteneausuarioPeer::retrieveByPk($this->getRequestParameter('id'));
    $this->forward404Unless($this->ateneausuario);

    try
    {
      $this->deleteAteneausuario($this->ateneausuario);
    }
    catch (PropelException $e)
    {
      $this->getRequest()->setError('delete', 'Could not delete the selected Ateneausuario. Make sure it does not have any associated items.');
      return $this->forward('taller', 'list');
    }

    return $this->redirect('taller/list');
  }

  public function handleErrorEdit()
  {
    $this->preExecute();
    $this->ateneausuario = $this->getAteneausuarioOrCreate();
    $this->updateAteneausuarioFromRequest();

    $this->labels = $this->getLabels();

    return sfView::SUCCESS;
  }

  protected function saveAteneausuario($ateneausuario)
  {



      // Update many-to-many for "estutaller"
      $c = new Criteria();
      $idU = $ateneausuario->getPrimaryKey();
      $c->add(SolicitudTallerPeer::USUARIO_ID, $idU);
      $this->getUser();
      $ids = $this->getRequestParameter('associated_estutaller');

      if (is_array($ids))
      {
        foreach ($ids as $id)
        {
         $cupos = TallerSesionPeer::retrieveByPk($id)->getCupos();
         $c2 = new Criteria();
         $c2->add(SolicitudTallerPeer::TALLER_ID,$id);
         $inscritos = SolicitudTallerPeer::doCount($c2);
         if($inscritos < $cupos){
          $c1 = new Criteria();
          $c1->add(SolicitudTallerPeer::USUARIO_ID,$idU);
          $c1->add(SolicitudTallerPeer::TALLER_ID,$id);
          $arrT =  SolicitudTallerPeer::doSelectOne($c1);

          if ($arrT == null)
          {

          $SolicitudTaller = new SolicitudTaller();
          $SolicitudTaller->setUsuarioId($ateneausuario->getPrimaryKey());
          $SolicitudTaller->setTallerId($id);
          $SolicitudTaller->save();

          }

        }

      }

    }

  }

  protected function deleteAteneausuario($ateneausuario)
  {
    $ateneausuario->delete();
  }

  protected function updateAteneausuarioFromRequest()
  {
    $ateneausuario = $this->getRequestParameter('ateneausuario');

    if (isset($ateneausuario['nomb_usuario']))
    {
      $this->ateneausuario->setNombUsuario($ateneausuario['nomb_usuario']);
    }
    if (isset($ateneausuario['rol_id']))
    {
    $this->ateneausuario->setRolId($ateneausuario['rol_id'] ? $ateneausuario['rol_id'] : null);
    }
    if (isset($ateneausuario['cedula']))
    {
      $this->ateneausuario->setCedula($ateneausuario['cedula']);
    }
    if (isset($ateneausuario['estutaller']))
    {
      $this->ateneausuario->setEstutaller($ateneausuario['estutaller']);
    }
  }

  protected function getAteneausuarioOrCreate($id = 'id')
  {
  	  $idu= $this->getUser()->getAttribute('idsesion');
      //$idu = $this->getUser()->getAttribute('idUsu');
      $ateneausuario = AteneausuarioPeer::retrieveByPk($idu);
	  //$this->getUser()->getAttributeHolder()->remove('idUsu');
	  //$this->getUser()->getAttributeHolder()->clear();

    return $ateneausuario;

  }

  protected function processFilters()
  {
  }

  protected function processSort()
  {
    if ($this->getRequestParameter('sort'))
    {
      $this->getUser()->setAttribute('sort', $this->getRequestParameter('sort'), 'sf_admin/ateneausuario/sort');
      $this->getUser()->setAttribute('type', $this->getRequestParameter('type', 'asc'), 'sf_admin/ateneausuario/sort');
    }

    if (!$this->getUser()->getAttribute('sort', null, 'sf_admin/ateneausuario/sort'))
    {
    }
  }

  protected function addFiltersCriteria($c)
  {
  }

  protected function addSortCriteria($c)
  {
    if ($sort_column = $this->getUser()->getAttribute('sort', null, 'sf_admin/ateneausuario/sort'))
    {
      $sort_column = AteneausuarioPeer::translateFieldName($sort_column, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME);
      if ($this->getUser()->getAttribute('type', null, 'sf_admin/ateneausuario/sort') == 'asc')
      {
        $c->addAscendingOrderByColumn($sort_column);
      }
      else
      {
        $c->addDescendingOrderByColumn($sort_column);
      }
    }
  }

  protected function getLabels()
  {
    return array(
      'ateneausuario{nomb_usuario}' => 'Usuario:',
      'ateneausuario{rol_id}' => 'Rol:',
      'ateneausuario{cedula}' => 'Cedula:',
      'ateneausuario{estutaller}' => 'Lista de Talleres:',
    );
  }


}
